package com.yupi.yuojcodesandbox;

import cn.hutool.core.io.resource.ResourceUtil;
import com.yupi.yuojcodesandbox.model.ExcuteCodeRequest;
import com.yupi.yuojcodesandbox.model.ExcuteCodeResponse;
import org.springframework.stereotype.Component;

import java.nio.charset.StandardCharsets;
import java.util.Arrays;

@Component
public class JavaNativeCodeSandbox extends JavaCodeSandboxTemplate {
    //直接调用父级的方法 直接就用父级的流程实现了java原生的代码沙箱 因为父级的流程就可以实现java原生的代码沙箱 所以不用写任何的子方法去覆盖父级的子流程
    //如果你重写了父类的方法的子流程 则采用重写的流程直接覆盖了父类的 docker的实现就需要重写第3步进行覆盖

//    public static void main(String[] args) {
//        JavaNativeCodeSandbox javaNativeCodeSandbox = new JavaNativeCodeSandbox();
//
//        ExcuteCodeRequest excuteCodeRequest = new ExcuteCodeRequest();
//        //因为程序接受的参数有两组 所以控制台会有两次运行成功的输出
//        excuteCodeRequest.setInputList(Arrays.asList("1 2", "1 3"));
//        //ResourceUtil.readStr可以读取resources目录下的文件 也就是存放用户代码的目录 然后为测试用例的excuteCodeRequest.setCode()赋值
//        //String code = ResourceUtil.readStr("testCode/simpleCompute/Main.java", StandardCharsets.UTF_8);
//
//        //测试用户输入参数的测试
//        String code = ResourceUtil.readStr("testCode/simpleComputeArgs/Main.java", StandardCharsets.UTF_8);
//
//
//        //测试恶意程序
////        String code = ResourceUtil.readStr("testCode/unsafeCode/RunFileError.java", StandardCharsets.UTF_8);
//        excuteCodeRequest.setCode(code);
//        excuteCodeRequest.setLanguage("java");
//        ExcuteCodeResponse excuteCodeResponse = javaNativeCodeSandbox.excuteCode(excuteCodeRequest);
//        System.out.println(excuteCodeResponse);
//    }
    @Override
    public ExcuteCodeResponse excuteCode(ExcuteCodeRequest excuteCodeRequest) {
        return super.excuteCode(excuteCodeRequest);
    }
}
